1. Field of the Invention
The present invention relates to packet network communications, and more particularly to method, apparatus, media, and signals for controlling a packet transmission rate from a packet source to reduce queue congestion.
2. Description of Related Art
The rapid growth of applications and services over the Internet has made the performance of the Transmission Control Protocol (TCP) a major issue in data networking. TCP is an end-to-end transport protocol that is designed to work with any underlying network technology. The TCP protocol makes no assumption on how the network processes data it sends, and has its own data recovery and flow control features. The basic TCP does not rely on any explicit feedback from the network to detect congestion. Instead, it relies on packet loss as the only means of signaling network congestion. Every time a TCP data source detects a packet loss, it assumes that the loss is due to buffer overflow somewhere in the network. The source then reduces its data transmission rate to alleviate the congestion that could have caused the packet loss.
Specifically, congestion control and error recovery are implemented by a dynamic window in TCP. The source expects to receive an acknowledgment from the destination for every packet it transmits. The size of the dynamic window determines the number of unacknowledged packets that can be present in the network at any given time. When a packet is acknowledged, the window size is increased (up to a certain maximum), and when a packet is lost, the window size is decreased, forcing the source data rate to decrease.
In a high-latency network environment, the dynamic window flow control mechanism of TCP may not be very effective because it relies on packet loss to signal congestion, instead of avoiding congestion and buffer overflow. Furthermore most implementations use coarse timers, with 200-500 ms granularity, for example, which results in delayed response. In general, by the time the source starts decreasing its data rate because of packet loss, the network has already been overly congested. Ideally, it would be desirable for the source to react to congestion before it occurs rather than acting when it is too late.
By incorporating efficient and faster congestion indication mechanisms in the end-to-end TCP feedback control loop, the performance of TCP can be improved significantly. Providing such mechanisms by modifying or changing the senders or receiver's TCP stack is an option. However, this may not be a feasible solution in the near term since the large installed base of TCP end-user implementations have to be modified or changed. In addition, only upgraded end-users get the performance improvements. What is needed are solutions which ensure compatibility with current TCP end-user implementations, expedite market acceptance, and meet current data networking requirements.
A number of mechanisms have been proposed to use a network node as a possible place to detect congestion and take the necessary control decisions to limit the impact of congestion on network performance with these requirements in mind. Some mechanisms are based on implicit feedback and only indirectly influence TCP behavior, e.g., Random Early Detection (RED) which relies on packet dropping for congestion control.
ACK pacing is a more direct technique for regulating the TCP source rate by controlling the rate of arrival of acknowledgments to the TCP source. ACK pacing is analogous to the storage of permits in the well-known leaky-bucket scheme. In this scheme TCP acknowledgments can be viewed as permits that allow the destination (and also a network element through a slower pacing interval) to request packets from the source. The ACKs arrive at the network node according to TCP dynamics and are drained out at a configured rate. ACK pacing at a network node eliminates the need to change or modify the sender or receiver's TCP stack.
Studies have shown that by appropriately regulating the inter-ACK spacing, an intermediate network node can essentially reduce queue buildups and buffer requirements, TCP timeouts and packet loss while still achieving high link utilization. A number of algorithms have been proposed for determining the proper ACK spacing in network nodes. Some of these algorithms include techniques to infer when a TCP connection is in slow-start versus congestion avoidance, so that the desired spacing between ACKs can be adjusted accordingly to provide more spacing in the slow-start phase, for example. Most of the existing ACK pacing algorithms do not offer optimal behavior because it is difficult to design an algorithm that can determine the proper ACK spacing for a wide range of network conditions. In addition, it will be very difficult, if not impossible, to infer at a network node the (slow-start or congestion avoidance) phases of the aggregate TCP traffic mix.